package dectorator;

/**
 * @author Keason
 * @version 创建时间：2022年11月20日 下午9:06:05
 * @TODO
 * 
 */
public class FullBorder extends Border {
	public FullBorder(Display display) {
		super(display);
	}

	public int getColumns() { // 字符数为被装饰物的字符数加上两侧边框字符数
		return 1 + display.getColumns() + 1;
	}

	public int getRows() { // 行数为被装饰物的行数加上上下边框的行数
		return 1 + display.getRows() + 1;
	}

	public String getRowText(int row) { // 指定的那一行的字符串
		if (row == 0) { // 上边框
			return "+" + makeLine('-', display.getColumns()) + "+";
		} else if (row == display.getRows() + 1) { // 下边框
			return "+" + makeLine('-', display.getColumns()) + "+";
		} else { // 其他边框
			return "|" + display.getRowText(row - 1) + "|";
		}
	}

	private String makeLine(char ch, int count) { // 生成一个重复count次字符ch的字符串
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < count; i++) {
			buf.append(ch);
		}
		return buf.toString();
	}
}
